// 图书管理路由器
const express = require('express')
const fs = require('fs')
const BookModel = require('../models/BookModel')

const router = express.Router()

// 图书列表的路由
router.get('/list', (req, res) => {
    // 通过数据库查找出所有的book列表
    BookModel.find((error, data) => {
        if (error) {
            res.render('../views/book/error.ejs', { errorMsg: '数据库查找books失败' })
            console.log('数据库查找books失败')
        } else {
            res.render('../views/book/list.ejs', { book: data })
        }
    })
})
// 进入添加页面的路由
router.get('/toAdd', (req, res) => {
    const book = {
        name: '',
        author: '',
        price: 0
    }
    res.render('../views/book/toAddOrUpgrade.ejs', { book })
})
// 添加数据的跳转路由
// - 重定向到：/list
router.post('/add', (req, res) => {
    const book1 = req.body
    BookModel.create(book1, (error, data) => {
        if (error) {
            res.render('../views/book/error.ejs', { errorMsg: '添加图书失败' })
            console.log('添加图书失败')
        } else {
            console.log('新添加的数据为', req.body)
            res.redirect('/list')
            console.log('添加图书成功', data)
        }
    })
})

// 添加删除数据的跳转路由
// - 重定向: /list
router.get('/remove/:id', (req, res) => {
    // 获取请求的参数：id
    const { id } = req.params
    // 根据id删除数据库中的数据
    BookModel.deleteOne({ _id: id }, (error, data) => {
        if (error) {
            res.render('../views/book/error.ejs', { errorMsg: '删除数据失败' })
        } else {
            console.log('已删除图书', data)
            res.redirect('/list')
        }
    })
})

// 添加修改数据的跳转路由
// - 重定向: /list
router.get('/toUpdate/:id', (req, res) => {
    //获取需要修改的数据id
    const { id } = req.params
    //根据id找寻到对应的book
    BookModel.findById(id, (error, data) => {
        let book = data
        if (error) {
            console.log('查询需要修改的数据失败')
            res.render('../views/book/error.ejs', { errorMsg: '查询需要修改的数据失败' })
        } else {
            res.render('../views/book/toAddOrUpgrade.ejs', { book })
        }
    })
})
// 添加修改数据的路由
// - 重定向: /list
router.post('/update', (req, res) => {
    // 获取请求的参数，是输入框填写的东西行成的对象
    const book = req.body
    console.log(book)
    // 将参数添加到数据库
    BookModel.updateOne({ _id: book._id }, book, (error, data) => {
        if (error) {
            console.log('修改需要修改的数据失败')
            res.render('../views/book/error.ejs', { errorMsg: '修改需要修改的数据失败' })
        } else {
            console.log("修改完成后的数据", data)
            res.redirect('/list')
        }
    })
})


module.exports = router